Software applications sometimes must read or write very large files and run for long periods of time. They may run for as long as several days or weeks. As they run, they consume resources like CPU cycles, memory, tape drives, and disks. While such applications are running, it is sometimes desirable to pause them for a period of time so that higher priority work can be done. Operating system features are usually provided to suspend the job or make it lower priority, thus freeing up resources like memory and CPU cycles. However, such operating system features do not usually make tape drives available. This situation creates problems in computer installations where a great deal of information is stored on tapes. Tapes are often the only affordable way to store large amounts of data, and a shortage of tape drives therefore translates directly into a limitation on the number of applications that can be run.
A long running job could tie up tape drives for several days. It is desirable to provide that a long running job would use the tape drives only while no other jobs need them, however there may be no way to free the tape drives during the time when they are needed by other applications. If the long running job is not written with a pause and resume feature, it must have the tape drives during the entire time that it is running. To support more jobs, the computer installation must either have extra tape drives or carefully plan the execution of its jobs so that other applications will only be run while the long running jobs are not running. Long running applications may also be rewritten to have enough intelligence so that they can free the tape drives and then reallocate them upon request. Such rewriting may be costly and, further, must be placed into every long running application to be effective.